package models

import (
	"gitee.com/lzqysoft/framework/common/tool"
	"time"
	"gitee.com/lzqysoft/framework/common/uuid"
	"gitee.com/lzqysoft/framework/common/log"
)

type Module struct {
	Id        string `xorm:"not null pk index unique VARCHAR(64)"`
	Onwer     string `xorm:"VARCHAR(64)"`
	Group     string `xorm:"VARCHAR(64)"`
	Creater   string `xorm:"VARCHAR(64)"`
	CreateAt  int64  `xorm:"BIGINT"`
	CreateOrg string `xorm:"VARCHAR(64)"`
	Updater   string `xorm:"VARCHAR(64)"`
	UpdateAt  int64  `xorm:"BIGINT"`
	Deleter   string `xorm:"VARCHAR(64)"`
	DeleteAt  int64  `xorm:"BIGINT"`
	Isdelete  string `xorm:"VARCHAR(2)"`
	Status    string `xorm:"VARCHAR(2)"`
	Remark    string `xorm:"VARCHAR(255)"`
	Operation int    `xorm:"INTEGER"`
	Obligate3 string `xorm:"VARCHAR(64)"`
	Obligate2 string `xorm:"VARCHAR(64)"`
	Obligate  string `xorm:"VARCHAR(64)"`
	Name      string `xorm:"VARCHAR(32)"`
	Code      string `xorm:"index VARCHAR(32)"`
	Category  string `xorm:"VARCHAR(32)"`  // 00 微服务模块，01 功能模块（菜单） 02 接口
	Node      string `xorm:"VARCHAR(16)"`
	Pnode     string `xorm:"VARCHAR(16)"`
	Pid       string `xorm:"VARCHAR(64)"`
	Level     string `xorm:"VARCHAR(2)"` // 00 根， 01
	Interface string `xorm:"VARCHAR(128)"`
	Service   string `xorm:"VARCHAR(64)"`
}

func (v *Module) TableName() string {
	return "base_module"
}
func (v *Module) BeforeInsert(){
	v.Id = uuid.UUID()
	v.CreateAt = time.Now().Unix()
	v.UpdateAt = time.Now().Unix()
}
func (v Module) Convert2Map() map[string]interface{} {
	return tool.Struct2Map(v)
}

// GetAllModules 查询所有模块
func GetAllModules() ([]Module, error){
	var ms []Module
	err :=  db.Find(&ms)
	return ms, err
}

// GetMenusbyUserIdAndGroupId 查询用户有权限的菜单
func GetMenusbyUserIdAndGroupId(userId, groupId string) []map[string]interface{} {

	return nil
}

// GetModulesByIdSlice 根据id切片获取module
func GetModulesByIdSlice(id []string) []Module{
	var auths []Module
	if err :=  db.In("id", id).Find(&auths); err != nil {
		log.Error(err)
		return nil
	}
	return auths
}